!function(e, n) {
    "function" == typeof define && (define.amd || define.cmd) ? define(function() {
        return n(e)
    }) : n(e, !0)
}(this, function(o, e) {
    if (!o.jWeixin) {
        var n, c = {
            config: "preVerifyJSAPI",
            onMenuShareTimeline: "menu:share:timeline",
            onMenuShareAppMessage: "menu:share:appmessage",
            onMenuShareQQ: "menu:share:qq",
            onMenuShareWeibo: "menu:share:weiboApp",
            onMenuShareQZone: "menu:share:QZone",
            previewImage: "imagePreview",
            getLocation: "geoLocation",
            openProductSpecificView: "openProductViewWithPid",
            addCard: "batchAddCard",
            openCard: "batchViewCard",
            chooseWXPay: "getBrandWCPayRequest",
            openEnterpriseRedPacket: "getRecevieBizHongBaoRequest",
            startSearchBeacons: "startMonitoringBeacons",
            stopSearchBeacons: "stopMonitoringBeacons",
            onSearchBeacons: "onBeaconsInRange",
            consumeAndShareCard: "consumedShareCard",
            openAddress: "editAddress"
        }, a = function() {
            var e = {};
            for (var n in c)
                e[c[n]] = n;
            return e
        }(), i = o.document, t = i.title, r = navigator.userAgent.toLowerCase(), s = navigator.platform.toLowerCase(), d = !(!s.match("mac") && !s.match("win")), u = -1 != r.indexOf("wxdebugger"), l = -1 != r.indexOf("micromessenger"), p = -1 != r.indexOf("android"), f = -1 != r.indexOf("iphone") || -1 != r.indexOf("ipad"), m = (n = r.match(/micromessenger\/(\d+\.\d+\.\d+)/) || r.match(/micromessenger\/(\d+\.\d+)/)) ? n[1] : "", g = {
            initStartTime: L(),
            initEndTime: 0,
            preVerifyStartTime: 0,
            preVerifyEndTime: 0
        }, h = {
            version: 1,
            appId: "",
            initTime: 0,
            preVerifyTime: 0,
            networkType: "",
            isPreVerifyOk: 1,
            systemType: f ? 1 : p ? 2 : -1,
            clientVersion: m,
            url: encodeURIComponent(location.href)
        }, v = {}, S = {
            _completes: []
        }, y = {
            state: 0,
            data: {}
        };
        O(function() {
            g.initEndTime = L()
        });
        var I = !1
            , _ = []
            , w = {
            config: function(e) {
                B("config", v = e);
                var t = !1 !== v.check;
                O(function() {
                    if (t)
                        M(c.config, {
                            verifyJsApiList: C(v.jsApiList),
                            verifyOpenTagList: C(v.openTagList)
                        }, function() {
                            S._complete = function(e) {
                                g.preVerifyEndTime = L(),
                                    y.state = 1,
                                    y.data = e
                            }
                                ,
                                S.success = function(e) {
                                    h.isPreVerifyOk = 0
                                }
                                ,
                                S.fail = function(e) {
                                    S._fail ? S._fail(e) : y.state = -1
                                }
                            ;
                            var t = S._completes;
                            return t.push(function() {
                                !function() {
                                    if (!(d || u || v.debug || m < "6.0.2" || h.systemType < 0)) {
                                        var i = new Image;
                                        h.appId = v.appId,
                                            h.initTime = g.initEndTime - g.initStartTime,
                                            h.preVerifyTime = g.preVerifyEndTime - g.preVerifyStartTime,
                                            w.getNetworkType({
                                                isInnerInvoke: !0,
                                                success: function(e) {
                                                    h.networkType = e.networkType;
                                                    var n = "https://open.weixin.qq.com/sdk/report?v=" + h.version + "&o=" + h.isPreVerifyOk + "&s=" + h.systemType + "&c=" + h.clientVersion + "&a=" + h.appId + "&n=" + h.networkType + "&i=" + h.initTime + "&p=" + h.preVerifyTime + "&u=" + h.url;
                                                    i.src = n
                                                }
                                            })
                                    }
                                }()
                            }),
                                S.complete = function(e) {
                                    for (var n = 0, i = t.length; n < i; ++n)
                                        t[n]();
                                    S._completes = []
                                }
                                ,
                                S
                        }()),
                            g.preVerifyStartTime = L();
                    else {
                        y.state = 1;
                        for (var e = S._completes, n = 0, i = e.length; n < i; ++n)
                            e[n]();
                        S._completes = []
                    }
                }),
                w.invoke || (w.invoke = function(e, n, i) {
                        o.WeixinJSBridge && WeixinJSBridge.invoke(e, x(n), i)
                    }
                        ,
                        w.on = function(e, n) {
                            o.WeixinJSBridge && WeixinJSBridge.on(e, n)
                        }
                )
            },
            ready: function(e) {
                0 != y.state ? e() : (S._completes.push(e),
                !l && v.debug && e())
            },
            error: function(e) {
                m < "6.0.2" || (-1 == y.state ? e(y.data) : S._fail = e)
            },
            checkJsApi: function(e) {
                M("checkJsApi", {
                    jsApiList: C(e.jsApiList)
                }, (e._complete = function(e) {
                    if (p) {
                        var n = e.checkResult;
                        n && (e.checkResult = JSON.parse(n))
                    }
                    e = function(e) {
                        var n = e.checkResult;
                        for (var i in n) {
                            var t = a[i];
                            t && (n[t] = n[i],
                                delete n[i])
                        }
                        return e
                    }(e)
                }
                    ,
                    e))
            },
            onMenuShareTimeline: function(e) {
                P(c.onMenuShareTimeline, {
                    complete: function() {
                        M("shareTimeline", {
                            title: e.title || t,
                            desc: e.title || t,
                            img_url: e.imgUrl || "",
                            link: e.link || location.href,
                            type: e.type || "link",
                            data_url: e.dataUrl || ""
                        }, e)
                    }
                }, e)
            },
            onMenuShareAppMessage: function(n) {
                P(c.onMenuShareAppMessage, {
                    complete: function(e) {
                        "favorite" === e.scene ? M("sendAppMessage", {
                            title: n.title || t,
                            desc: n.desc || "",
                            link: n.link || location.href,
                            img_url: n.imgUrl || "",
                            type: n.type || "link",
                            data_url: n.dataUrl || ""
                        }) : M("sendAppMessage", {
                            title: n.title || t,
                            desc: n.desc || "",
                            link: n.link || location.href,
                            img_url: n.imgUrl || "",
                            type: n.type || "link",
                            data_url: n.dataUrl || ""
                        }, n)
                    }
                }, n)
            },
            onMenuShareQQ: function(e) {
                P(c.onMenuShareQQ, {
                    complete: function() {
                        M("shareQQ", {
                            title: e.title || t,
                            desc: e.desc || "",
                            img_url: e.imgUrl || "",
                            link: e.link || location.href
                        }, e)
                    }
                }, e)
            },
            onMenuShareWeibo: function(e) {
                P(c.onMenuShareWeibo, {
                    complete: function() {
                        M("shareWeiboApp", {
                            title: e.title || t,
                            desc: e.desc || "",
                            img_url: e.imgUrl || "",
                            link: e.link || location.href
                        }, e)
                    }
                }, e)
            },
            onMenuShareQZone: function(e) {
                P(c.onMenuShareQZone, {
                    complete: function() {
                        M("shareQZone", {
                            title: e.title || t,
                            desc: e.desc || "",
                            img_url: e.imgUrl || "",
                            link: e.link || location.href
                        }, e)
                    }
                }, e)
            },
            updateTimelineShareData: function(e) {
                M("updateTimelineShareData", {
                    title: e.title,
                    link: e.link,
                    imgUrl: e.imgUrl
                }, e)
            },
            updateAppMessageShareData: function(e) {
                M("updateAppMessageShareData", {
                    title: e.title,
                    desc: e.desc,
                    link: e.link,
                    imgUrl: e.imgUrl
                }, e)
            },
            startRecord: function(e) {
                M("startRecord", {}, e)
            },
            stopRecord: function(e) {
                M("stopRecord", {}, e)
            },
            onVoiceRecordEnd: function(e) {
                P("onVoiceRecordEnd", e)
            },
            playVoice: function(e) {
                M("playVoice", {
                    localId: e.localId
                }, e)
            },
            pauseVoice: function(e) {
                M("pauseVoice", {
                    localId: e.localId
                }, e)
            },
            stopVoice: function(e) {
                M("stopVoice", {
                    localId: e.localId
                }, e)
            },
            onVoicePlayEnd: function(e) {
                P("onVoicePlayEnd", e)
            },
            uploadVoice: function(e) {
                M("uploadVoice", {
                    localId: e.localId,
                    isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
                }, e)
            },
            downloadVoice: function(e) {
                M("downloadVoice", {
                    serverId: e.serverId,
                    isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
                }, e)
            },
            translateVoice: function(e) {
                M("translateVoice", {
                    localId: e.localId,
                    isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
                }, e)
            },
            chooseImage: function(e) {
                M("chooseImage", {
                    scene: "1|2",
                    count: e.count || 9,
                    sizeType: e.sizeType || ["original", "compressed"],
                    sourceType: e.sourceType || ["album", "camera"]
                }, (e._complete = function(e) {
                    if (p) {
                        var n = e.localIds;
                        try {
                            n && (e.localIds = JSON.parse(n))
                        } catch (e) {}
                    }
                }
                    ,
                    e))
            },
            getLocation: function(e) {},
            previewImage: function(e) {
                M(c.previewImage, {
                    current: e.current,
                    urls: e.urls
                }, e)
            },
            uploadImage: function(e) {
                M("uploadImage", {
                    localId: e.localId,
                    isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
                }, e)
            },
            downloadImage: function(e) {
                M("downloadImage", {
                    serverId: e.serverId,
                    isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
                }, e)
            },
            getLocalImgData: function(e) {
                !1 === I ? (I = !0,
                    M("getLocalImgData", {
                        localId: e.localId
                    }, (e._complete = function(e) {
                        if (I = !1,
                        0 < _.length) {
                            var n = _.shift();
                            wx.getLocalImgData(n)
                        }
                    }
                        ,
                        e))) : _.push(e)
            },
            getNetworkType: function(e) {
                M("getNetworkType", {}, (e._complete = function(e) {
                    e = function(e) {
                        var n = e.errMsg;
                        e.errMsg = "getNetworkType:ok";
                        var i = e.subtype;
                        if (delete e.subtype,
                            i)
                            e.networkType = i;
                        else {
                            var t = n.indexOf(":")
                                , o = n.substring(t + 1);
                            switch (o) {
                                case "wifi":
                                case "edge":
                                case "wwan":
                                    e.networkType = o;
                                    break;
                                default:
                                    e.errMsg = "getNetworkType:fail"
                            }
                        }
                        return e
                    }(e)
                }
                    ,
                    e))
            },
            openLocation: function(e) {
                M("openLocation", {
                    latitude: e.latitude,
                    longitude: e.longitude,
                    name: e.name || "",
                    address: e.address || "",
                    scale: e.scale || 28,
                    infoUrl: e.infoUrl || ""
                }, e)
            },
            getLocation: function(e) {
                M(c.getLocation, {
                    type: (e = e || {}).type || "wgs84"
                }, (e._complete = function(e) {
                    delete e.type
                }
                    ,
                    e))
            },
            hideOptionMenu: function(e) {
                M("hideOptionMenu", {}, e)
            },
            showOptionMenu: function(e) {
                M("showOptionMenu", {}, e)
            },
            closeWindow: function(e) {
                M("closeWindow", {}, e = e || {})
            },
            hideMenuItems: function(e) {
                M("hideMenuItems", {
                    menuList: e.menuList
                }, e)
            },
            showMenuItems: function(e) {
                M("showMenuItems", {
                    menuList: e.menuList
                }, e)
            },
            hideAllNonBaseMenuItem: function(e) {
                M("hideAllNonBaseMenuItem", {}, e)
            },
            showAllNonBaseMenuItem: function(e) {
                M("showAllNonBaseMenuItem", {}, e)
            },
            scanQRCode: function(e) {
                M("scanQRCode", {
                    needResult: (e = e || {}).needResult || 0,
                    scanType: e.scanType || ["qrCode", "barCode"]
                }, (e._complete = function(e) {
                    if (f) {
                        var n = e.resultStr;
                        if (n) {
                            var i = JSON.parse(n);
                            e.resultStr = i && i.scan_code && i.scan_code.scan_result
                        }
                    }
                }
                    ,
                    e))
            },
            openAddress: function(e) {
                M(c.openAddress, {}, (e._complete = function(e) {
                    e = function(e) {
                        return e.postalCode = e.addressPostalCode,
                            delete e.addressPostalCode,
                            e.provinceName = e.proviceFirstStageName,
                            delete e.proviceFirstStageName,
                            e.cityName = e.addressCitySecondStageName,
                            delete e.addressCitySecondStageName,
                            e.countryName = e.addressCountiesThirdStageName,
                            delete e.addressCountiesThirdStageName,
                            e.detailInfo = e.addressDetailInfo,
                            delete e.addressDetailInfo,
                            e
                    }(e)
                }
                    ,
                    e))
            },
            openProductSpecificView: function(e) {
                M(c.openProductSpecificView, {
                    pid: e.productId,
                    view_type: e.viewType || 0,
                    ext_info: e.extInfo
                }, e)
            },
            addCard: function(e) {
                for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
                    var r = n[t]
                        , a = {
                        card_id: r.cardId,
                        card_ext: r.cardExt
                    };
                    i.push(a)
                }
                M(c.addCard, {
                    card_list: i
                }, (e._complete = function(e) {
                    var n = e.card_list;
                    if (n) {
                        for (var i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
                            var o = n[i];
                            o.cardId = o.card_id,
                                o.cardExt = o.card_ext,
                                o.isSuccess = !!o.is_succ,
                                delete o.card_id,
                                delete o.card_ext,
                                delete o.is_succ
                        }
                        e.cardList = n,
                            delete e.card_list
                    }
                }
                    ,
                    e))
            },
            chooseCard: function(e) {
                M("chooseCard", {
                    app_id: v.appId,
                    location_id: e.shopId || "",
                    sign_type: e.signType || "SHA1",
                    card_id: e.cardId || "",
                    card_type: e.cardType || "",
                    card_sign: e.cardSign,
                    time_stamp: e.timestamp + "",
                    nonce_str: e.nonceStr
                }, (e._complete = function(e) {
                    e.cardList = e.choose_card_info,
                        delete e.choose_card_info
                }
                    ,
                    e))
            },
            openCard: function(e) {
                for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
                    var r = n[t]
                        , a = {
                        card_id: r.cardId,
                        code: r.code
                    };
                    i.push(a)
                }
                M(c.openCard, {
                    card_list: i
                }, e)
            },
            consumeAndShareCard: function(e) {
                M(c.consumeAndShareCard, {
                    consumedCardId: e.cardId,
                    consumedCode: e.code
                }, e)
            },
            chooseWXPay: function(e) {
                M(c.chooseWXPay, V(e), e)
            },
            openEnterpriseRedPacket: function(e) {
                M(c.openEnterpriseRedPacket, V(e), e)
            },
            startSearchBeacons: function(e) {
                M(c.startSearchBeacons, {
                    ticket: e.ticket
                }, e)
            },
            stopSearchBeacons: function(e) {
                M(c.stopSearchBeacons, {}, e)
            },
            onSearchBeacons: function(e) {
                P(c.onSearchBeacons, e)
            },
            openEnterpriseChat: function(e) {
                M("openEnterpriseChat", {
                    useridlist: e.userIds,
                    chatname: e.groupName
                }, e)
            },
            launchMiniProgram: function(e) {
                M("launchMiniProgram", {
                    targetAppId: e.targetAppId,
                    path: function(e) {
                        if ("string" == typeof e && 0 < e.length) {
                            var n = e.split("?")[0]
                                , i = e.split("?")[1];
                            return n += ".html",
                                void 0 !== i ? n + "?" + i : n
                        }
                    }(e.path),
                    envVersion: e.envVersion
                }, e)
            },
            openBusinessView: function(e) {
                M("openBusinessView", {
                    businessType: e.businessType,
                    queryString: e.queryString || "",
                    envVersion: e.envVersion
                }, (e._complete = function(n) {
                    if (p) {
                        var e = n.extraData;
                        if (e)
                            try {
                                n.extraData = JSON.parse(e)
                            } catch (e) {
                                n.extraData = {}
                            }
                    }
                }
                    ,
                    e))
            },
            miniProgram: {
                navigateBack: function(e) {
                    e = e || {},
                        O(function() {
                            M("invokeMiniProgramAPI", {
                                name: "navigateBack",
                                arg: {
                                    delta: e.delta || 1
                                }
                            }, e)
                        })
                },
                navigateTo: function(e) {
                    O(function() {
                        M("invokeMiniProgramAPI", {
                            name: "navigateTo",
                            arg: {
                                url: e.url
                            }
                        }, e)
                    })
                },
                redirectTo: function(e) {
                    O(function() {
                        M("invokeMiniProgramAPI", {
                            name: "redirectTo",
                            arg: {
                                url: e.url
                            }
                        }, e)
                    })
                },
                switchTab: function(e) {
                    O(function() {
                        M("invokeMiniProgramAPI", {
                            name: "switchTab",
                            arg: {
                                url: e.url
                            }
                        }, e)
                    })
                },
                reLaunch: function(e) {
                    O(function() {
                        M("invokeMiniProgramAPI", {
                            name: "reLaunch",
                            arg: {
                                url: e.url
                            }
                        }, e)
                    })
                },
                postMessage: function(e) {
                    O(function() {
                        M("invokeMiniProgramAPI", {
                            name: "postMessage",
                            arg: e.data || {}
                        }, e)
                    })
                },
                getEnv: function(e) {
                    O(function() {
                        e({
                            miniprogram: "miniprogram" === o.__wxjs_environment
                        })
                    })
                }
            }
        }
            , T = 1
            , k = {};
        return i.addEventListener("error", function(e) {
            if (!p) {
                var n = e.target
                    , i = n.tagName
                    , t = n.src;
                if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i)
                    if (-1 != t.indexOf("wxlocalresource://")) {
                        e.preventDefault(),
                            e.stopPropagation();
                        var o = n["wx-id"];
                        if (o || (o = T++,
                            n["wx-id"] = o),
                            k[o])
                            return;
                        k[o] = !0,
                            wx.ready(function() {
                                wx.getLocalImgData({
                                    localId: t,
                                    success: function(e) {
                                        n.src = e.localData
                                    }
                                })
                            })
                    }
            }
        }, !0),
            i.addEventListener("load", function(e) {
                if (!p) {
                    var n = e.target
                        , i = n.tagName;
                    n.src;
                    if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) {
                        var t = n["wx-id"];
                        t && (k[t] = !1)
                    }
                }
            }, !0),
        e && (o.wx = o.jWeixin = w),
            w
    }
    function M(n, e, i) {
        o.WeixinJSBridge ? WeixinJSBridge.invoke(n, x(e), function(e) {
            A(n, e, i)
        }) : B(n, i)
    }
    function P(n, i, t) {
        o.WeixinJSBridge ? WeixinJSBridge.on(n, function(e) {
            t && t.trigger && t.trigger(e),
                A(n, e, i)
        }) : B(n, t || i)
    }
    function x(e) {
        return (e = e || {}).appId = v.appId,
            e.verifyAppId = v.appId,
            e.verifySignType = "sha1",
            e.verifyTimestamp = v.timestamp + "",
            e.verifyNonceStr = v.nonceStr,
            e.verifySignature = v.signature,
            e
    }
    function V(e) {
        return {
            timeStamp: e.timestamp + "",
            nonceStr: e.nonceStr,
            package: e.package,
            paySign: e.paySign,
            signType: e.signType || "SHA1"
        }
    }
    function A(e, n, i) {
        "openEnterpriseChat" != e && "openBusinessView" !== e || (n.errCode = n.err_code),
            delete n.err_code,
            delete n.err_desc,
            delete n.err_detail;
        var t = n.errMsg;
        t || (t = n.err_msg,
            delete n.err_msg,
            t = function(e, n) {
                var i = e
                    , t = a[i];
                t && (i = t);
                var o = "ok";
                if (n) {
                    var r = n.indexOf(":");
                    "confirm" == (o = n.substring(r + 1)) && (o = "ok"),
                    "failed" == o && (o = "fail"),
                    -1 != o.indexOf("failed_") && (o = o.substring(7)),
                    -1 != o.indexOf("fail_") && (o = o.substring(5)),
                    "access denied" != (o = (o = o.replace(/_/g, " ")).toLowerCase()) && "no permission to execute" != o || (o = "permission denied"),
                    "config" == i && "function not exist" == o && (o = "ok"),
                    "" == o && (o = "fail")
                }
                return n = i + ":" + o
            }(e, t),
            n.errMsg = t),
        (i = i || {})._complete && (i._complete(n),
            delete i._complete),
            t = n.errMsg || "",
        v.debug && !i.isInnerInvoke && alert(JSON.stringify(n));
        var o = t.indexOf(":");
        switch (t.substring(o + 1)) {
            case "ok":
                i.success && i.success(n);
                break;
            case "cancel":
                i.cancel && i.cancel(n);
                break;
            default:
                i.fail && i.fail(n)
        }
        i.complete && i.complete(n)
    }
    function C(e) {
        if (e) {
            for (var n = 0, i = e.length; n < i; ++n) {
                var t = e[n]
                    , o = c[t];
                o && (e[n] = o)
            }
            return e
        }
    }
    function B(e, n) {
        if (!(!v.debug || n && n.isInnerInvoke)) {
            var i = a[e];
            i && (e = i),
            n && n._complete && delete n._complete,
                console.log('"' + e + '",', n || "")
        }
    }
    function L() {
        return (new Date).getTime()
    }
    function O(e) {
        l && (o.WeixinJSBridge ? e() : i.addEventListener && i.addEventListener("WeixinJSBridgeReady", e, !1))
    }
});
